在进行线性回归时,代价函数往往是残差平方和,通过使得残差平方和最小从而取得最优解。在最小化残差平方和过程中,最常用的是梯度下降算法(Gradient Descent)和正则方程(Normal Equation),但各有优缺点,下面进行简单讨论。
正则方程(Normal Equation)
很多书籍都介绍了梯度下降算法,这里就不介绍梯度下降算法的原理的,下面简单的介绍一下正则方程(Normal Equation)的原理。
给定数据$x_{i}\in\{x^{(1)},x^{(2)},\cdots,x^{(m)}\}$,即:
$$
X = \left [ \begin{matrix}
1 & x_{11} & x_{12} & \cdots & x_{1n} \\
\vdots & \vdots & \vdots & & \vdots \\
1 & x_{m1} & x_{m2} & \cdots & x_{mn} \\
\end{matrix}\right ]
$$
对应标签$y_i\in\{y^{(1)},y^{(2)},\cdots,y^{(m)}\}$,线性回归是求解一组参数$\theta_0,\theta_1,\cdots,\theta_n$,使得残差平方和$\sum_{i=1}^{m}(h_{\theta}(x_i)-y_i)^2$最小。也即求解$X\Theta = Y$的最小二乘解。
一般来说,
$$\delta_i=\sum_{j=1}^{n}x_{ij}\theta_j-y_i\quad (i=1,2,\cdots,m)$$
不会全为0,因此我们的目标是求解一组$\Theta^* = \{ \theta^*_{1},\theta^*_{2},\cdots,\theta^*_{n}\}$,使得
$$\phi(\theta_{1},\theta_{2},\cdots,\theta_{n})=\sum_{i=1}^{m}\delta^2=\sum_{i=1}^{m}(\sum_{j=1}^{n}x_{ij}\theta_j-y_i)^2$$
取最小值。对其求偏导得:
$$\frac{\partial\phi}{\partial\theta_k}=2\sum_{i=1}^{m}(\sum_{j=1}^{n}\theta_jx_{ij}-y_i)x_{ik}=0\quad (k=1,2,\cdots,n)$$
即:
$$\sum_{j=1}^{n}\sum_{i=1}^{m}x_{ij}x_{ik}\theta_j=\sum_{i=1}^{m}x_{ik}y_i$$
用矩阵表示即:
$$X^TX\Theta=X^TY$$
所以$\Theta=(X^TX)^{-1}X^TY$,即得线性回归模型残差平方和最小的解。若加入正则化项,代价函数为:
$$cost(h_\theta(x))=\frac{1}{2m}(\sum^m_{i=1}(h_\theta(x_i)-y_i)^2+\lambda\sum^n_{i=1}\theta^2)$$
则其最优解为:
$$\Theta=(X^TX+\lambda\left [ \begin{matrix}
0 & 0 & 0 & \cdots & 0 \\
0 & 1 & 0 & \cdots & 0 \\
0 & 0 & 1 & \cdots & 0 \\
\vdots & \vdots & \vdots & & \vdots \\
0 & 0 & 0 & \cdots & 1 \\
\end{matrix}\right ])^{-1}X^TY$$
Gradient Descent与Normal Equation比较
Gradient Descent的方法进行线性回归有如下特点:
(1)需要预先选定Learning rate;
(2)需要多次iteration;
(3)需要Feature Scaling;
而Normal Equation的特点:简单、方便、不需要Feature Scaling。但在使用时收数据特征规模的影响:
当Feature数量小于100000时使用Normal Equation;
当Feature数量大于100000时使用Gradient Descent;